【问题标题】:django data from manytomanyfield intermediate table来自manytomanyfield中间表的django数据
【发布时间】:2011-01-06 18:22:18
【问题描述】:

目前,我在我的 models.py 中设置了以下模型结构(精简):

class Admin(models.Model):
    admin_name = models.CharField(unique = True, blank = False, null = False, max_length = 128, verbose_name = u'admin full name')

    def __unicode__(self):
        return self.admin_name
    class Meta:
        ordering = ('id',)
        verbose_name = u'Admin Info'

class Project(models.Model):
    client = models.ForeignKey(Client, verbose_name = u'Client')
    description = models.ForeignKey(Description, verbose_name = u'project description')
    admins = models.ManyToManyField(Admin, verbose_name = u'Administrators', through = 'Admin_Payment')

class Admin_Payment(models.Model):
    admin = models.ForeignKey(Admin, verbose_name = u'Administrator')
    project = models.ForeignKey(Project, verbose_name = u'project')
    agreed_payment = models.DecimalField(max_digits = 16, decimal_places = 2, blank = True, default = 0)

如您所见,我使用 Admin_Payment 作为中间表在我的项目和管理员之间设置了多对多关系。

我的问题是如何让我的 Project 类可以使用协定的付款字段(在 Admin_Payment 类中)?

【问题讨论】:

    标签: django manytomanyfield


    【解决方案1】:

    Django 在 Project 对象中创建一个属性admin_payment_set,它是一个“相关管理器”。访问其对象,例如所有()”。例如

    p = Project.objects.get(pk=1)
    paysets = p.admin_payment_set.all()
    paysets[0].agreed_payment
    

    【讨论】:

    • BTW:遇到这种疑惑时,我最好的朋友就是ipython shell和python的自省机制。创建一个Project的实例,和dir(it),或者使用ipython的自动补全来检查它的属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2021-04-04
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2010-11-30
    • 2020-07-19
    相关资源
    最近更新 更多