Как получить экземпляр модели ModelForm, чтобы удалить его - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь это:

if request.method == 'POST':
    form = RmEmplForm(request.POST)
    if form.is_valid():
        employee = form.save(commit=False)
        employee.delete()

, но он возвращает экземпляр с None полем id (но в таблице есть правильный экземпляр)

Employee object can't be deleted because its id attribute is set to None.

формы.py

class RmEmplForm(forms.ModelForm):
    name = forms.ModelChoiceField(label="Сотрудник",
        queryset = Employee.objects.all())

    class Meta:
        model = Employee
        fields = []

Я бы предпочел использовать метод save(), чтобы не использовать первичные ключи или что-то еще, если это возможно

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Как говорится в вашей ошибке Employee object can't be deleted because its id attribute is set to None., сначала получите ПК, который хотите удалить, и удалите его так:

obj = YourModel.objects.get(pk=pk)
if request.method == 'POST':
     obj.delete()
     return redirect('some_path')
1 голос
/ 16 октября 2019

Ну, вы можете попробовать вот так:

if request.method == 'POST':
    form = RmEmplForm(request.POST)
    if form.is_valid():
        instance = form.cleaned_data.get('name')
        instance.delete()

Здесь я выбираю экземпляр из cleaned_data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...