[英]django, related_name, foreign key
我必须在Django中执行以下代码:
class User(models.Model):
username = models.CharField(max_length=50, unique=True)
password = models.CharField(max_length=15)
class Follows(models.Model):
user = models.ManyToManyField(User, related_name = 'Isread+')
follower = models.ManyToManyField(User, related_name = 'Reads+')
当我尝试执行此操作时,出现错误:
>>> from twitter.models import *
>>> u1 = User.objects.all()[0]
>>> u2 = User.objects.all()[1]
>>> Follows.objects.create(user = u1, follower = u2)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python33\lib\site-packages\django\db\models\manager.py", line 149, in create
return self.get_query_set().create(**kwargs)
File "C:\Python33\lib\site-packages\django\db\models\query.py", line 414, in create
obj = self.model(**kwargs)
File "C:\Python33\lib\site-packages\django\db\models\base.py", line 415, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
TypeError: 'follower' is an invalid keyword argument for this function
有谁知道为什么会这样? 提前谢谢。
当您具有ManyToManyField时,首先需要创建Follows
对象(保存它),以便它具有主键才能使多对多关系起作用。 另外,您需要使用ManyToManyManager将项目添加到关系中。
简而言之,您需要执行以下操作:
f = Followers()
f.save()
f.user.add(u1)
f.follower.add(u2)
f.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.