データベーステーブルとリレーションシップを構築しようとしています。私は3つのテーブルを持つ現時点でチュートリアルのレッスンを持っています。たとえば、(auth_userテーブル、partyEventテーブル、フレンドテーブル)。リレーショナルデータベース - Django Rest Framework
ユーザーは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')
パーティーイベントに友だちを割り当てる場所はありません。友達と一緒に、あなたはオーナーかパーティーIDを提供していますか? – hurturk
@ hurturk、私は友人をユーザに割り当てます。一度私は友人をユーザーに割り当て、私は友人が属しているparyEventを知ることができるでしょう。私は十分にはっきりしていることを願っています:) –
あなたの 'FriendsSerializer'オーナーは' ReadOnlyField'であってはならないと思うので、あなたのビューは入力時に入力を割り当てることができます。あなたはその行をコメントアウトしようとしましたか? – hurturk