Я создаю модель для хранения опыта ...
Вот моя модель
class Experience(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=255, blank=True)
company = models.CharField(max_length=255, blank=True)
current_company = models.BooleanField(default=False)
start_date = models.DateField(default=datetime.now)
end_date = models.DateField(default=datetime.now)
В этой current_company используется для показа, что это текущая компания ....
Это моя форма для получения данных от пользователя
class ExperienceForm(forms.ModelForm):
class Meta:
model = Experience
exclude = ['user']
Это мое мнение
class ExperienceFormView(TemplateView, LoginRequiredMixin):
template_name = 'accounts/profile/expereince_form.html'
form_class = ExperienceForm
def post(self, request, *args, **kwargs):
context = self.get_context_data()
if context['form'].is_valid():
data = context['form'].save(commit=False)
data.user = request.user
data.save()
return JsonResponse({'status': 'success', 'message': 'Created Successfully'}, status=201, safe=False)
return super(ExperienceFormView, self).render_to_response(context)
def get_context_data(self, **kwargs):
context = super(ExperienceFormView, self).get_context_data(**kwargs)
form = ExperienceForm(
self.request.POST or None) # instance= None
context["form"] = form
return context
Как лучше всего реализовать следующие варианты использования
1) Если я активирую свою current_company как True, тогда предыдущий объект, имеющий current_company, становится False
2) Если предыдущего объекта нет, тогда игнорируем первый вариант использования .....