Как задать ForeignKey во view
Как в views.py привязать объявление к полю ForeignKey? Я пытаюсь это сделать так, но не получается:
AdvertisementImages.objects.create(image=i, advertisement=form.save())
Я перепробовал кучу вариантов и перерыл весь гугл, но ничего не помогло. Буду очень благодарен за любую помощь!
models.py
class HelpAnnouncement(models.Model):
"""HelpAnnouncements"""
url = models.SlugField(max_length=200, unique=True, auto_created=True)
title = models.CharField(max_length=100)
description = models.TextField(max_length=2000)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
location = models.CharField(max_length=30)
created = models.DateTimeField(auto_now_add=True)
number = models.CharField(max_length=13)
category = models.ForeignKey(CallBoardCategory, on_delete=models.CASCADE)
views = models.PositiveIntegerField(default=0)
isRequest = models.BooleanField(default=False)
status = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if not self.url:
self.url = slugify(self.title + "-" + rand_slug())
super(HelpAnnouncement, self).save(*args, **kwargs)
def get(self):
self.views += 1
self.views.save()
return self.views
class Meta:
verbose_name = "Help announcement"
verbose_name_plural = "Help announcements"
def __str__(self):
return self.title
def get_url(self):
return reverse('advertisementDetail', kwargs={'slug': self.url})
class AdvertisementImages(models.Model):
"""Photos for Advertisement"""
image = models.ImageField("Зображення", upload_to="peopleHelp_images/")
advertisement = models.ForeignKey(HelpAnnouncement, verbose_name="Зображення", on_delete=models.CASCADE, related_name='get_url')
class Meta:
verbose_name = "Зображення з оголошення"
verbose_name_plural = "Зображення з оголошення"
forms.py
class CallCreateForm(forms.ModelForm):
class Meta:
model = HelpAnnouncement
fields = ('title', 'description', 'location', 'category')
class CallImagesForm(forms.ModelForm):
class Meta:
model = AdvertisementImages
image = forms.ImageField(widget=widgets.FileInput(attrs={'multiple': True}))
fields = ('image',)
views.py
def create(request):
if request.method == 'POST':
form = CallCreateForm(request.POST, request.FILES)
form_2 = CallImagesForm(request.POST, request.FILES)
if form.is_valid():
form.instance.author = request.user
form.instance.number = request.user.phone
form.save()
for i in form_2:
AdvertisementImages.objects.create(image=i, advertisement=form.save())
return redirect('advertisementList')
else:
form = CallCreateForm()
form_2 = CallImagesForm()
return render(request, 'peoplehelp/create.html', {'form': form, 'form_images': form_2})