Форма модели не отображается - PullRequest
0 голосов
/ 08 октября 2019

Я использую модельформ, потому что модельный отдел не работает. (Кстати, у меня есть пользовательская модель пользователя также в приложении пользователя того же проекта). Все, что я получаю, это кнопка «Проверить» в выводе html. Кроме того, изменение электронной почты и выход из системы могут быть следствием использования allauth в промежуточном программном обеспечении. Я не знаю, мешает ли Аллах этому или нет (надеюсь, что нет). Я добавил модель отдела к администратору, но в админке описана странная вещь, описанная ниже

Я пытался отладить многими способами.

Вот модель

from django.db import models
from django.conf import settings
from users.models import User,UserProfile

# Create your models here.
class department(models.Model):
    Dept_CHOICES = (
        (1, 'Inventory'),
        (2, 'Dispatch'),
        )
    dept_type = models.PositiveSmallIntegerField(choices=Dept_CHOICES,default=1,unique=False),
    HOD = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,),
    Invest = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,),

    def __str__(self):
        return self.dept_type

Вот код вида

def add_model(request):

    if request.method == "POST":
        form = departForm(request.POST)
        if form.is_valid():
            model_instance = form.save(commit=False)
            model_instance.save()
            return redirect('/')

    else:

        form = departForm()

        return render(request, "test.html", {'form': form})

base.html

<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head>

</head>
  <body>
  <main>
    {% block content %}

    {% endblock %}
  </main>
</body>
</html>

test.html

{% extends 'base.html' %}

{% block content %}
<div class = "container">
  <h2>Sign up</h2>
    <form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <button type="submit">Test up</button>
    </form>
  </div>
{% endblock %}

admin.py

from core1.models import department

# Register your models here.

@admin.register(department)
class DepartmentAdmin(admin.ModelAdmin):
    pass 

вывод в admin сайта представляет собой одно поле со странным именем

<django.db.models.fields.PositiveSmallIntegerField>

ДляДополнительная информация, я использую представление класса и представление функции в одном файле views.py. Надеюсь, что это разрешено.

Я ожидаю, что форма будет отображаться. Пробовал form.as_p, но получал

<<bound method BaseForm.as_p of <departForm bound=False, valid=False, fields=()>>

Пробовал form.valid

<bound method BaseForm.is_valid of <departForm bound=False, valid=False, fields=()>>

1 Ответ

0 голосов
/ 08 октября 2019

Решено самостоятельно!

  1. Я проверил сайт администратора. Модель отдела не отображается. Это означает, что либо я не выполняю миграцию должным образом, либо моя модель отдела имеет проблему
  2. В моей модели отдела все поля заканчиваются на (запятая). То же самое удалило и сделало модель более надежной и без ошибок.
  3. Убрал все миграции и сделал новую миграцию
  4. Изменен админ следующим образом
# Register your models here.
class departmentadmin(admin.ModelAdmin):
    fields = ['HOD', 'Investigator', 'dept_type']
    list_display = ('HOD','Investigator','dept_type')
    pass

admin.site.register(department, departmentadmin)

Теперь администратор тожес указанием отдела и формы, а также с указанием отделов с необходимыми данными.

...