【发布时间】:2021-01-16 19:13:46
【问题描述】:
我检查了一下,找不到任何我正在寻找的示例,所以我不确定它是否可能。
我有一个带有外键的模型。我想在该模型中创建一个新对象,但我没有 ID,但我有字段“用户名”值。我还应该补充一点,这是与另一个外键的外键关系
WeekdayAssignment 模型示例:
class WeekdayAssignment(models.Model):
start_date = models.DateField(auto_now=False, auto_now_add=False)
end_date = models.DateField(auto_now=False, auto_now_add=False)
triage = models.ForeignKey(TeamMember, on_delete=models.PROTECT, related_name="triagers")
...
团队成员模型示例:
class TeamMember(models.Model):
member = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='Member Name')
...
用户模型示例:
class User(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
username = models.CharField(max_length=50)
我想做的是使用来自外键的成员用户名创建一个新对象,而不是像这样的 ID:
WeekdayAssignment.objects.create(start_date='2021-01-13', end_date='2021-01-20', triage__member__username='jac')
但是,如果我这样做,我会收到错误 WeekdayAssignment() got an unexpected keyword argument 'triage__member__username',如果我删除 __username
如果像这样从字段中删除 __member__username:
WeekdayAssignment.objects.create(start_date='2021-01-13', end_date='2021-01-20', triage='jac')
我得到ValueError:无法分配“'jac'”:“WeekdayAssignment.triage”必须是“TeamMember”实例。这是完全可以预料的,因为它不是 ID 或实例。 p>
所以我的问题是,我是否可以使用外键模型中的另一个字段来创建数据,还是我使用 ID 卡住了?
任何帮助将不胜感激。
谢谢, jAC
【问题讨论】:
-
可以直接在该字段中添加任何
TeamMember实例,但它必须是TeamMember实例。
标签: python django django-models orm