相同的字段,在Django模型子类中有不同的选择 [英] Same field, different choices in Django model subclasses
问题描述
可以为模型的子类使用不同的选项
以下代码应该给你一个想法
class Clothing(models.Model):
pre>
size = models.CharField max_length = 1)
color = models.CharField(max_length = 1)
SHIRT_SIZES = {
'S','Small',
'M'中等',
'L','大',
}
类TShirt(models.Model):
size = models.CharField(max_length =选择= SHIRT_SIZES)
MENS_CHOICES = {
'K','黑',
'R','红',
'B' ,
}
class MensColours(models.Model):
color = models.CharField(max_length = 1,choices = MENS_CHOICES)
class MensShirt (MensColours,TShirt):
class Meta:
verbose_name =男士衬衫
WOMENS_CHOICES = {
'P','Pink',
'W','White',
'B','Brown',
}
class WomensColours(models.Model):
color = models.CharField (MAX_LENGTH = 1,选择= WOMENS_CHOICES)
class WomensShirt(WomensColours,TShirt):
class Meta:
verbose_name =女衬衫
我使用mixins的原因是我有可以在不同模型之间共享的属性/选项(例如还有女士/男士的裤子,可能具有相同的颜色选择,但不同于T恤衫的尺寸选择)。总的来说,所有的服装都有颜色和大小。
我该怎么做?
解决方案不。潜在的领域选择在父母中是固定的。您可以通过指定表单字段的有效选项,以一种形式解决此问题,但不能更改模型字段的基本特性。
Is it possible to use different
choices
for subclasses of models? The following code should give you an ideaclass Clothing(models.Model): size = models.CharField(max_length=1) colour = models.CharField(max_length=1) SHIRT_SIZES = { 'S','Small', 'M','Medium', 'L','Large', } class TShirt(models.Model): size = models.CharField(max_length=1, choices=SHIRT_SIZES) MENS_CHOICES = { 'K','Black', 'R','Red', 'B','Blue', } class MensColours(models.Model): colour = models.CharField(max_length=1, choices=MENS_CHOICES) class MensShirt(MensColours, TShirt): class Meta: verbose_name = "men's shirt" WOMENS_CHOICES = { 'P','Pink', 'W','White', 'B','Brown', } class WomensColours(models.Model): colour = models.CharField(max_length=1, choices=WOMENS_CHOICES) class WomensShirt(WomensColours, TShirt): class Meta: verbose_name = "women's shirt"
The reason I'm using mixins is that I have attributes/choices that can be shared between different models (e.g. also having women's/men's pants, which may have the same colour choices but different size choices than the TShirts). Overall, however, all clothing has a colour and a size.
How should I do this?
解决方案No. Potential field choices are fixed in the parent. You can get around this in a form by specifying the valid choices for the form field, but you cannot change the fundamental nature of the model field.
这篇关于相同的字段,在Django模型子类中有不同的选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!