【问题标题】:django model structure for many to many relasionship based on third model基于第三模型的多对多关系的django模型结构
【发布时间】:2010-10-17 03:31:20
【问题描述】:

我目前有三种型号:

class Request(models.Model):
    requester=models.CharField()
    dateRequested = models.DateField(auto_now=True)
    title= models.CharField(max_length=255)
    description = models.TextField()

class RequestType(models.Model):
    requestType=models.CharField('Request Type', max_length=256)

class RequestTypeInfo(models.Model):
    requestType=models.ForeignKey('RequestType', verbose_name='Request Type')
    title = models.CharField('title', max_length=256)
    info = models.CharField(max_length=256, blank=True)

这个想法是每个请求都显示所有类型的请求共有的信息,并根据所选的请求类型向用户提供要填写的附加字段。

我将如何更改模型以允许这样做,以及我将如何编写视图以向用户显示表单,以便根据基本请求显示附加信息。最好有第二个视图来询问更多信息。

最终目标是管理员可以创建新的请求类型,而无需在 python 中创建模型,只需添加新请求并添加任何其他信息字段。

【问题讨论】:

  • RequestTypeInfo 类是否只有 title 和 info 字段,或者每个 RequestType 是否可以有不同的字段?
  • 我希望管理员用户能够在管理员后端创建新的请求类型,在创建该请求类型的请求时,可以从用户那里获得额外的信息... ...制作感觉?

标签: django django-models


【解决方案1】:

那么您是说要使用 RequestType 作为中间模型创建从 Request 到 RequestTypeInfo 的多对多关系?

class Request(models.Model):
    requester=models.CharField()
    dateRequested = models.DateField(auto_now=True)
    title= models.CharField(max_length=255)
    description = models.TextField()
    request_type = models.ManyToManyField(RequestType, through='RequestTypeInfo')

class RequestType(models.Model):
    requestType=models.CharField('Request Type', max_length=256)

class RequestTypeInfo(models.Model):
    requestType=models.ForeignKey('RequestType', verbose_name='Request Type')
    title = models.CharField('title', max_length=256)
    info = models.CharField(max_length=256, blank=True)

我们可以在澄清后讨论内联管理模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-09
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2015-02-03
    • 2014-01-22
    • 2021-05-16
    相关资源
    最近更新 更多