データベース内のテーブルとリレーションシップを構築しています。現在私は3つのテーブルでチュートリアルのレッスンを持っています。たとえば、(auth_userテーブル、partyEventテーブル、フレンドテーブル)。Owner_idをnullにすることはできません。 DRFリレーショナルデータベース
ユーザーはpartyEventを1つしか作成できません。フレンドは、ユーザーが作成した任意の数のpartyEventに参加できます。 FriendsモデルのオーナーIDは、partyEventとUser 'friend'が属していることを通知します。
partyEventを1つだけ作成するようにユーザーを制限できます。しかし、partyEventに友達を登録しようとすると、オーナーのIDは送信されません。代わりに、デフォルト値:
owner = models.OneToOneField('auth.User', related_name = 'party', on_delete=models.CASCADE, default='1')
が送信されます。なぜそれが起こっているのですか?
モデル
class PartyEvent(models.Model):
name = models.CharField(max_length=100, blank=False)
location = models.CharField(max_length=100, blank=False)
owner = models.OneToOneField('auth.User', related_name = 'party', on_delete=models.CASCADE, default='1')
class Friends(models.Model):
name = models.CharField(max_length=100, blank=False)
owner = models.ForeignKey('auth.User',related_name = 'friends', on_delete=models.CASCADE, default='1')
シリアライザ
class FriendsSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.id')
class Meta:
model = Friends
fields = ('id','name','owner')
私は:)明確な理解を得ることはありません。シリアライザモデルでReadOnlyFieldを持つ別のクラスがありますが、DB –
に公開されているときにオーナーIDを送信していますので間違いがあります。 https://github.com/encode/django-rest-framework/blob/a8e527a4625b48914a553256f8be2907bfcc7c99/rest_framework/serializers.py#L412 –
この問題をどのように解決するか:)私はあなたの答えを理解していない –