Как установить поля в Django на основе входных данных?
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
Итак, в зависимости от типа изображения выбор должен работать.
Например:
If choice = attachments then url field should be blank
или
If choice = url then attachment field should be blank
Я работаю на Django Rest Framework ModelViewSets.
Так что любой может, пожалуйста, помочь мне решить это. Большое спасибо
вы можете реализовать свою логику в представлении create, например
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)