【问题标题】:Django custom dropdown depending on field typeDjango 自定义下拉菜单取决于字段类型
【发布时间】:2021-06-09 09:52:00
【问题描述】:

我有模型:

class DeepLink(models.Model):

    class DeepLinkType(models.TextChoices):
                TRACING = ('Tracing', 'Tracing')
                BUTTON = ('Button', 'Button')
                MODAL = ('Modal', 'Modal')
    
    id = models.UUIDField(primary_key=True, default=uuid4)
    type = models.CharField(max_length=7, choices=DeepLinkType.choices, blank=False)
    uri = models.UUIDField(blank=False, default=uuid4)
    
    
    class Meta:
        db_table = 'deeplink'

class Button(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid4)
    text = models.CharField(max_length=500, blank=False)
    link = models.CharField(max_length=250, blank=False)
    image = models.CharField(max_length=250, blank=True)

    class Meta:
        db_table = 'button'


class Modal(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid4)
    image = models.CharField(max_length=250, blank=True)
    header = models.CharField(max_length=250, blank=True)
    body = models.CharField(max_length=250, blank=True)

    class Meta:
        db_table = 'modal'

class Tracing(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid4)
    external = models.BooleanField(blank=True, default=False)
    external_link = models.CharField(max_length=250, blank=True)

    class Meta:
        db_table = 'tracing'

我需要在 Django Admin 中为字段 uri 提供一个下拉列表,具体取决于 type 已选择。例如,如果我们选择type 作为Button,则uri 字段应该是所有可能按钮等的下拉列表。

显然我不能将uri 声明为外键,因为它可以引用3 个表。因此,它现在只是管理员中的一个文本字段。

如何在 Django Admin 中制作这样的动态下拉菜单?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    这看起来是通用外键的完美用途。一般来说,建议谨慎使用它们,但这是它们的用途。

    https://simpleisbetterthancomplex.com/tutorial/2016/10/13/how-to-use-generic-relations.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2015-11-01
      • 2014-04-30
      • 2011-10-10
      • 2020-05-11
      • 2012-10-12
      相关资源
      最近更新 更多