alj*_*alj 5 django django-forms
我有一个典型的M2M场景,促销活动与我们的零售商有关.但是我们有大量零售商(超过10k),因此我无法使用普通的多选小部件.
我打算做的是拥有一个带有"零售商"子页面的"活动"实例页面,该子页面上有一个表格,列出了当前与该活动相关的所有零售商.此外,每个零售商旁边都会有一个"删除"复选框,以便在必要时将其从列表中删除.(当然,我还有另一个搜索/结果页面,用户可以选择他们想要添加到列表中的零售商,但我相信我可以自己解决这个问题).
有人能指出我关于模型和模板工厂的正确方向,因为我不知道从哪里开始.直接操作app_activity_associated_retailers表似乎很明显,但我不认为我可以使用现有函数执行此操作.是否有这样做的模式.
class Activity(models.Model):
budget = models.ForeignKey('Budget')
activity_type = models.ForeignKey('ActivityType')
amount = models.DecimalField(max_digits=8, decimal_places=2)
associated_retailers = models.ManyToManyField('Retailer', related_name='associated_retailers')
class Retailer(models.Model):
name = models.CharField(max_length=50)
address01 = models.CharField(max_length=50)
address02 = models.CharField(max_length=50, blank=True)
postcode = models.CharField(max_length=5)
city = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)
无论你是否自己定义一个模型,所有人ManyToManyField都有一个through模型.在你的情况下,它将有id一个activity字段和一个retailer字段.您可以访问该表Activity.associated_retailers.through- 一种"明显"的方式是将其公开为"模型"之类的
ActivityRetailer = Activity.associated_retailers.through
Run Code Online (Sandbox Code Playgroud)
你现在可以操纵这些关系,就像它们是任何ol'Django模型一样,所以你可以生成像这样的查询集
retailer_records_for_activity = ActivityRetailer.objects.filter(activity_id=1234)
Run Code Online (Sandbox Code Playgroud)
...并且您还可delete以为这些伪模型创建模型表单集(如果这样配置,则使用该复选框完成).
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |