相同的字段,在Django模型子类中有不同的选择 [英] Same field, different choices in Django model subclasses

查看:108
本文介绍了相同的字段,在Django模型子类中有不同的选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可以为模型的子类使用不同的选项以下代码应该给你一个想法

  class Clothing(models.Model):
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 =女衬衫
pre>

我使用mixins的原因是我有可以在不同模型之间共享的属性/选项(例如还有女士/男士的裤子,可能具有相同的颜色选择,但不同于T恤衫的尺寸选择)。总的来说,所有的服装都有颜色和大小。



我该怎么做?

解决方案

不。潜在的领域选择在父母中是固定的。您可以通过指定表单字段的有效选项,以一种形式解决此问题,但不能更改模型字段的基本特性。


Is it possible to use different choices for subclasses of models? The following code should give you an idea

class 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆