【发布时间】:2018-05-26 19:01:23
【问题描述】:
如何将 ForeignKey 的选择限制为具有 ForeignKey 的对象到我也有 ForeignKey 的对象?
class ExtendedProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='extended_profile')
dob = models.DateField(null=True, blank=True, verbose_name="date of birth")
prefered_profile = models.ForeignKey('Trainer', on_delete=models.SET_NULL, null=True, blank=False, related_name='main_profiles', limit_choices_to={ 'owner' : ____ })
def __str__(self):
return self.user.username
def create_user_profile(sender, instance, created, **kwargs):
if created:
ExtendedProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
ExtendedProfile 是 Django 自己的用户模型的扩展,因此具有 OneToOneField 类型 ForeignKey。
Trainer 是配置文件的不同模型,其中可能有多个 Trainer 具有与 User 相同的 ForeignKey(字段名称“所有者”)。
我基本上是在尝试确保“prefered_profile”只能是与 ExtendedProfile 相同的用户拥有的对象...如何在模型上获得 self 的值?
【问题讨论】: