简体   繁体   English

Django与字段和自身的众多关系具有独特的共同关系

[英]Django unique together relationship with field and manytomany on self

I'm try create post with language and content, and relate it on other versions of same page, but I'm get stuck 我尝试使用语言和内容来创建帖子,并将其与同一页面的其他版本相关联,但是我被卡住了

class Page(models.Model):
    content = models.TextField()
    language = models.CharField(max_length=7, choices=settings.LANGUAGES)
    versions = models.ManyToManyField('self', blank=True)
    class Meta:
        unique_together = ('language', 'versions',)

This will not work properly, because Django not allow make "unique" ManyToMany fields. 这将无法正常工作,因为Django不允许创建“唯一的” ManyToMany字段。

Then I'm try make same relationship trough related model: 然后,我尝试通过相关模型创建相同的关系:

class VersionsPage(models.Model):
    pass
    # ToDo: add unique together here,  to foreign key field

class Page(models.Model):
    ...
    versions = models.ManyToManyField('self', blank=True, through="VersionsPage")

Anyone know how to make that without using symmetrical=False? 有谁知道如何在不使用symmetric = False的情况下做到这一点?

I think you are looking for something like this: 我认为您正在寻找这样的东西:

class Page(models.Model):
    pass

class PageVersion(models.Model):
    page = models.ForeignKey(Page, related_name='versions')
    content = models.TextField()
    language = models.CharField(max_length=7, choices=settings.LANGUAGES)

    class Meta:
        unique_together = ('page', 'language',)


#getting all page versions:
page = Page.objects.get(pk=some_id)
versions = page.versions.all()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM