【问题标题】:How to set the fields in Django based on inputs?如何根据输入在 Django 中设置字段?
【发布时间】:2021-12-31 12:31:29
【问题描述】:

models.py

class NewsImage(models.Model):
    IMAGE_TYPE = (('Attachments','Attachments'),('URL','URL'))
    news = models.ForeignKey(Post, related_name='News', on_delete=models.CASCADE)
    image_type = models.CharField(max_length=12, verbose_name='Image Type', choices=IMAGE_TYPE)
    attachments = models.ImageField(upload_to='media/news_images', verbose_name='Image Attachments', blank=True)
    url = models.CharField(max_length=255, verbose_name='Image url', blank=True)

    def __str__(self):
        return (self.news)+ ' - ' +self.image_type

因此,根据 image_type,选择应该有效。 例如: If choice = attachments then url field should be blank If choice = url then attachment field should be blank 我正在研究 Django Rest Framework ModelViewSets 所以任何人都可以帮我解决这些问题。非常感谢

【问题讨论】:

    标签: django django-models django-rest-framework


    【解决方案1】:

    例如,您可以在创建视图中实现您的逻辑

    class BlankCreateView(CreateView):
        ....
        def __init__(self, **kwargs):
            self.object = None
            super().__init__(**kwargs)
    
        def form_valid(self, form):
        
            form.instance.author = self.request.user
            articles = form.save(commit=False)
            articles.author = self.request.user
        
            if articles.image_type = 'A':
                # do you logic here
            
            elif articles.image_type = 'B' :
                # do you logic here
            else:
                # do you logic here
            return super().form_valid(form)
    

    【讨论】:

    • 如何在 ModelViewset Django Rest Framework 中实现这些?
    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 2012-06-27
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多