如何为ForeignKey或OnetoOne字段创建自定义关系表?

时间:2017-08-23 07:45:00

标签: django django-models

我想要做的是创建一个模型,而不是用于存储有关两个元素之间关系的数据。使用ManytoMany字段,我可以使用参数“through”并指定一个存储两个元素外键的模型,如下所示。

def MyModel(models.Model):
    relation = models.ManyToManyField('AnotherModel', through='RelationModel')

def RelationModel(models.Model):
    model1 = models.ForeignKey('MyModel')
    model2 = models.ForeignKey('AnotherModel')
    slug = models.CharField()

OnetoOne关系或ForeignKey关系的等价物是什么?我已经阅读了关于自定义管理器的文档以及关于SO的一些帖子,所以最后我很困惑,我不知道解决方案是什么。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你可以这样做

from products.models import VendorDetails

class UserProfile(models.Model):
   user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile', on_delete=models.CASCADE)
   user_location = models.CharField(max_length=50, null=True)
   vendor_category = models.ManyToManyField(VendorDetails, through="UserProfileVendorCategory")

class UserProfileVendorCategory(models.Model):
   user_profile = models.ForeignKey(UserProfile)
   vendor_category = models.ForeignKey(VendorDetails)
   location = models.CharField(max_length=256)