下面是我的模特。
class DoneType (AbstractTimeStamp):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=200, primary_key=True)
class Done (AbstractTimeStamp):
user = models.ForeignKey(User, on_delete=models.CASCADE)
contents = models.CharField(max_length=200)
done_type = models.ForeignKey(DoneType, on_delete=models.SET_NULL, null=True)
start_time = models.DateTimeField()
> 一个用户可以拥有许多DONE模型。 DONE模型可以具有许多DONE_TYPE模型。
但是,只有在DONE模型中的USER与DONE_TYPE模型中的USER相同时,这才可能。 我该如何实现?
答案 0 :(得分:-1)
更有意义的是让DoneType.user
继承自ForeignKey
的{{1}},然后可以由Done
调用。
那样,您甚至不需要进行任何比较,因此不需要额外的数据库命中((也更快)。
)。但是,如果您想比较这两个字段,您将在视图中执行类似的操作...
假设done_type.user.user
和done = Done.objects.get(id=1)
done_type = DoneType.objects.get(id=1)
但是像这样比较是个坏主意。