我正在为django中的java应用程序构建一个UI。我想根据JPA创建的表创建Java表。为此,当我使用ManyToMany字段时,新创建的中间表具有与JPA不匹配的列名称。Django ManyToMany字段上的自定义列名称
有没有什么办法可以给表中的列提供自定义名称所以,以避免在Java中出现Missing列错误。
任何帮助将非常感激。
我正在为django中的java应用程序构建一个UI。我想根据JPA创建的表创建Java表。为此,当我使用ManyToMany字段时,新创建的中间表具有与JPA不匹配的列名称。Django ManyToMany字段上的自定义列名称
有没有什么办法可以给表中的列提供自定义名称所以,以避免在Java中出现Missing列错误。
任何帮助将非常感激。
您可以不指定任何额外的字段指定自定义through
模型。然后你就可以在ForeignKey
领域使用db_column=...
:
class A(models.Model):
...
class B(models.Model):
a = models.ManyToManyField(A, through='C', db_table='customtablename')
class C(models.Model):
a = models.ForeignKey(A, db_column='customcolumnname')
b = models.ForeignKey(B, db_column='secondcustomcolumnname')
正如上面提到的knbk确实出路,下面是完整的方式,我都做到了。
class A(models.Model):
....
class B(models.Model):
a = models.ManyToManyField(A,through = 'C', db_table = 'customtablename')
class C(models.Model):
a = models.ForeignKey(A,db_column='customcolumnname')
b = models.ForeignKey(B,db_column='secondcustomcolumnname')
在此之后的管理控制台上显示出来,必须使用内联这样既车型可以同时改变。(我认为这是再次的选择/要求的事)。该办法做到这是,
在admin.py
class ABInline(admin.TabularInline):
model = B.a.through
class AAdmin(admin.ModelAdmin):
inlines = [ABInline,]
class BAdmin(admin.ModelAdmin):
inlines = [ABInline,]
exclude = ('a',)
admin.register.site(B,巴德明)
该模型可在注册过模拟你想要的。
希望这有助于:) – Akshay
感谢您的支持。但我确实为显示添加了一些东西,我认为在使用'through'时必不可少。 – Akshay
有没有办法在不创建“穿透”模型的情况下做到这一点?我想在ManyToMany中间表中有一个自定义的外键列。有没有办法让ManyToManyField把db_column作为参数? –
@klandshome总有一种方法。有没有好的方法?当然不。您*可以*在*上直接设置'db_column'。 。through。 '在模型定义之后(例如'class_prepared'信号),但不能保证其他代码在更改之前不会使用模型。 –
knbk