如何获取limit_choices_to的模型对象自己的ID?

时间:2017-12-13 00:22:21

标签: python django

如何将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(字段名称“owner”)。

我基本上试图确保'prefered_profile'只能是与ExtendedProfile相同的用户所拥有的对象...如何在模型上获得self值?

1 个答案:

答案 0 :(得分:0)

我通过在modelForm上创建查询来解决我的问题。 This answer帮助了我。

我不会分享我的确切解决方案,因为它不会与读者正在做的相关。