Django:覆盖ManyToManyField中的默认字段名称

时间:2014-05-07 15:38:14

标签: django-models

美好的一天,

使用如下例所示的ManyToManyField会导致django自动创建一个名为country_region的模型,其中包含fields_id和region_id字段,这非常酷。但是,如果region_country数据库表(超出此线程范围的原因)具有除country_id和region_id之外的字段名称,该怎么办?

Django根据相关表的模型名称在多对多表中生成字段名称,因此我发现实现此目的的唯一方法是更改​​两个模型名称。但这迫使我拥有我不想要的型号名称!如何告诉django在自动多对多模型中使用哪些字段名称?

我尝试使用ManyToManyField的through = keyword参数显式指定多对多模型,这样可行,但是基于Region Model的表单不允许保存...

任何建议都非常感谢。

谢谢, 兰德尔

class Country(models.Model):
    country_id = models.AutoField(primary_key=True)
    country_name = models.CharField(max_length=200)

    class Meta:
        managed = False
        db_table = 'country'

    def __unicode__(self):
        return '%s' % (self.country_name)

class Region(models.Model):
    region_id = models.AutoField(primary_key=True)
    region_name = models.CharField(max_length=200)
    region = models.ManyToManyField(Country, db_table='region_country')

    class Meta:
        managed = False
        db_table = 'region'

0 个答案:

没有答案