#python #django
#python #django
Вопрос:
Я хотел бы знать, как обновить объект, который был создан пользователем (hunter). Вот модель продукта ниже:
class Product(models.Model):
title = models.CharField(max_length=250)
pub_date = models.DateTimeField()
body = models.TextField()
image = models.ImageField(upload_to='images/')
icon = models.ImageField(upload_to='images/')
url = models.TextField()
hunter = models.ForeignKey(User, on_delete=models.CASCADE)
Вот метод create, который предназначен для создания объекта:
def create(request):
if request.method == 'POST':
if request.POST['title'] and request.POST['body'] and request.POST['url'] and request.FILES['icon'] and request.FILES['image']:
product = Product()
product.title = request.POST['title']
product.body = request.POST['body']
if request.POST['url'].startswith('http://') or request.POST['url'].startswith('https://'):
product.url = request.POST['url']
else:
product.url = 'http://' request.POST['url']
product.icon = request.FILES['icon']
product.image = request.FILES['image']
product.pub_date = timezone.datetime.now()
product.hunter = request.user
product.save()
return redirect('/products/' str(product.id))
Не могли бы вы, пожалуйста, помочь мне создать метод обновления, чтобы только пользователь, создавший этот продукт, мог его удалить?
Комментарии:
1. У меня нет ответа, потому что ваш вопрос не очень конкретный. Однако сначала вам следует изучить использование ModelForms .
2. Посмотрите на использование общих представлений из Django docs.djangoproject.com/en/2.1/ref/class-based-views / …
3. У меня есть create.html где метод =’POST’ для формы. Мне нужно было бы создать update.html что похоже, но как его обновить, я не уверен, как
4. Если вы используете ModelForm, вам не придется по отдельности извлекать каждый атрибут из request.POST. После того, как вы отсортируете это, вы можете использовать ту же форму и шаблон для формы обновления. После настройки представления обновления у вас может быть некоторая логика, которая отклоняет или перенаправляет пользователя на основе
if product.user == request.user
5. Я немного сбит с толку. итак, как только я создал этот объект и у меня есть ListView и CreateView?