Я создал представление, в котором пользователи могли обновлять подписки в своих профилях, но когда я пошел добавлять нового пользователя, я понял, что не думал о создании новых подписчиков. Так что у меня было:Создание новых объектов с помощью Django ModelForm
models.py
class Customer_Subscription(models.Model):
user = models.ForeignKey(User)
customers = models.ManyToManyField('Customers', blank=True)
def __unicode__(self):
return (self.user)
forms.py
class CustomerSubscriptionForm(forms.ModelForm):
class Meta:
model = Customer_Subscription
fields = ['customers']
views.py
def profile(request):
if request.method == 'POST':
cust_subscription_instance = Customer_Subscription.objects.get(user=request.user.id)
customer_subscription = CustomerSubscriptionForm(request.POST, instance=cust_subscription_instance)
if customer_subscription.is_valid() and level_subscription.is_valid() and profile_form.is_valid():
customer_subscription.save(commit=True)
return HttpResponseRedirect('/profile/')
Поскольку не было ни одного случая объекта Customer_Subscription что запрос был неудачным. Я пробовал несколько вещей как «исключения», но никто, похоже, не работает, и я не знаю, если они близки к правильности. Ищите какую-то помощь.
views.py
try:
cust_subscription_instance = Customer_Subscription.objects.get(user=request.user.id)
customer_subscription = CustomerSubscriptionForm(request.POST, instance=cust_subscription_instance)
if customer_subscription.is_valid() and level_subscription.is_valid() and profile_form.is_valid():
customer_subscription.save(commit=True)
return HttpResponseRedirect('/profile/')
except:
customer_subscription = CustomerSubscriptionForm(request.user.id, request.POST)
if customer_subscription.is_valid():
customer_subscription.save(commit=True)
level_subscription.save(commit=True)
return HttpResponseRedirect('/profile/')
Спасибо. Subbing это на самом деле дал мне ошибку, потому что я не понял, что он вернул кортеж. Решено объявить как cust_subscription_instance, created = Customer_Subscription.objects.get_or_create (user = request.user) – user3184033
Да, извините, я забыл упомянуть, что: / – iskorum