如何使用Django中的“through”重命名ManyToMany字段的中间模型的属性

时间:2015-03-10 10:37:25

标签: django django-models

我有以下内容:

class CourseCategory(models.Model):    
     name = models.CharField(max_length=100)
     dishes = models.ManyToManyField(Dish, through='CourseCategoryDish', related_name='course_categories')

class CourseCategoryDish(models.Model):
    coursecategory = models.ForeignKey(CourseCategory)
    dish = models.ForeignKey(Dish)
    sort_order = models.IntegerField(default=10000)
    show = models.BooleanField(default=True)
    ordering = ['sort_order']

我现在通过迭代courseCategory.coursecategorydish_set显示我的菜肴,我想知道两件事:

  1. 如何将coursecategorydish_set重命名为coursecategorydishes
  2. 这是最好的方法还是有另一种方法可以使sort_order显示可访问/可用?
  3. 非常感谢。

1 个答案:

答案 0 :(得分:0)

这应该用于问题1:

coursecategory = models.ForeignKey(CourseCategory, related_name="coursecategorydishes")

对我来说,你的方法似乎至少是合乎逻辑的。但是,排序定义必须在Meta选项中:

class CourseCategoryDish(models.Model):
    coursecategory = models.ForeignKey(CourseCategory)
    .....
    class Meta
             ordering = ['sort_order']

您可以考虑使用PositiveIntegerField而不是IntegerField。我只是想使用Grappelli,然后使用内联,你可以拖放菜单的顺序。