我已经做到了:
class Person(models.Model):
name = models.CharField(max_length=100, unique=True)
address = models.TextField(max_length=1000)
class Following(models.Model):
following_id = models.AutoField(primary_key=True)
person_id = models.ForeignKey('Person', on_delete=models.CASCADE, related_name='child')
follower_id = models.ForeignKey('Person', on_delete=models.CASCADE, related_name='father')
class Meta:
unique_together = (("person_id", "follower_id"),)
如果我没有在外键中设置Null = True,我将得到错误消息;如果将其设置为True,它将创建如下的后续表:
id person_id follower_id
1 Null 2
10 Null 1
这是我向其中添加数据的方式:
Following(Person.objects.get(pk=1).id, Person.objects.get(pk=2).id)
我只想在两个FK中都有一个复合PK。它使第一项为PK,第二项为FK follower_id,而person_id为Null。有什么办法可以做到这样:
id person_id follower_id
1 1 2
2 10 1
答案 0 :(得分:1)
如果您查看Django documentation,
Model类仅接受关键字args。
class Model(**kwargs)
其中关键字参数只是您在模型上定义的字段的名称。
因此,您需要将对象保存行修改为:
f = Following(person=Person.objects.get(pk=1), follower=Person.objects.get(pk=2))
f.save()