Невозможно вывести содержимое, специфичное для пользователя
Я пытаюсь вывести объекты модели, уникальные для пользователя. Все методы, которые я нашел, не сработали, и я пытаюсь разобраться в этом уже некоторое время. Что должно происходить, так это то, что вы можете видеть размещенные вами вакансии в шаблоне manage-jobs.html. Также я удалил все свои неудачные попытки вывести пользовательский контент, не то чтобы я не пытался сделать это самостоятельно. Спасибо.
models.py
class Job(models.Model):
company = models.CharField(max_length=40, null=True, verbose_name="Company/Employer")
description = models.TextField(null=True)
role = models.CharField(max_length=25)
area_of_filming = models.CharField(max_length=50, verbose_name="Area Of Filming", default="")
contact_email = models.EmailField(verbose_name='Contact Email', max_length=60, default='')
created = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Account, default='', null=True, on_delete=models.CASCADE)
def __str__(self):
return self.company
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name='email', max_length=60, unique=True)
name = models.CharField(max_length=45, unique=False)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_employee = models.BooleanField(default=True, verbose_name='Are you using FilmLink as an employee?')
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name', 'is_employee']
objects = MyAccountManager()
class Meta:
permissions = [
("post_jobs", "Can post jobs"),
]
def __str__(self):
return self.name
def has_perm(self, perm, obj=None):
return True
def has_perms(self, perm):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
views.py
@login_required(login_url='login')
def manage_jobs(request):
if request.user.is_employee:
return redirect('home')
else:
form = JobForm(request.POST)
if form.is_valid():
form.save()
context = {"form":form}
return render(request, 'employer/manage-jobs.html', context)
manage-jobs.html
<button id="myBtn">Post A Job</button>
<div id="main"></div>
<div id="myModal" class="modal">
<div class="modal-content">
<span class="close">×</span>
<form action="" method="POST">
{% csrf_token %}
<div id="company-container">
<p>Employer Name</p>
<p id="employer">{{form.company}}</p>
</div>
<div id="role-container">
<p>Role (e.g. Actor, Director)</p>
<p id="role">{{form.role}}</p>
</div>
<div class="area-of-filming-container">
<p>Area Of Production/Filming</p>
<p id="area-of-filming">{{form.area_of_filming}}</p>
</div>
<div id="contact-email-container">
<p>Contact Email</p>
<p id="contact-email">{{form.contact_email}}</p>
</div>
<div id="description-container">
<p>Description Of Job</p>
<p id="description">{{form.description}}</p>
</div>
<button type="submit" id="post-job">Publish Job</button>
</form>
</div>
</div>
Вы сказали, что это должно выводить "задания". Это выведет только одно задание, но я предполагаю, что вы собираетесь решить эту проблему после того, как сможете увидеть содержимое на экране.
Я думаю, что проблема связана с вашей формой фронтенда.
Обратите внимание, что в вашей функции views.py manage_jobs
, если пользователь не является сотрудником, вы создаете форму по POST, но фронтенд не подключается к этому request.POST.
Я не уверен, как выглядит ваш файл urls.py, но вы хотите ссылаться на этот вызов views.py из вашей формы.
В вашем <form action="{% url 'manage_jobs' %}" method="POST">
Это может не быть вашим решением, но я бы проверил это в любом случае.
Надеюсь, вы сможете разобраться!