Итак, я видел один и тот же вопрос, опубликованный в разных сценариях, и я не могу заставить мой работать. В основном, пытаясь найти экземпляр модели, если он уже существует, и создать новый, если его нет - на основании того, что экземпляр имеет то же поле, что и имя пользователя пользователя
Я попытался получить get_object_or_404 и даже изменить первичный ключв поле в классе модели.
это - models.py
class Cart(models.Model):
user = models.CharField(max_length=30)
@classmethod
def create(cls, user):
user = cls(user=user)
return user
def __str__(self):
"""String for representing the Model object."""
return f'{self.id} {self.user}'
это - views.py
def cart(request, pk):
try:
pizza = PizzaInstance.objects.get(id=pk)
# get the topping(s)
topping_1 = int(request.POST["topping1"])
topping = PizzaTopping.objects.get(pk=topping_1)
# get the username
user = request.user.username
# check if the user already has an order
try:
order = Cart.objects.get(user=user)
except KeyError:
order = Cart.create([user])
order.save()
создание пользователя
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = (
'username',
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
Я ожидалувидеть сохраненный заказ и создание нового экземпляра или даже добавление новых экземпляров в корзину.
ошибка: get is - Запрос на сопоставление корзины не существует.
Спасибо!