Форма django не сохраняется в postgresql, но сохраняется в sqlite
Я развернул проект на Heroku. Я использую postgresql для своей базы данных.
Работа привязана к таблице клиентов с использованием acct_no в качестве внешнего ключа. Я могу создавать клиентов с помощью postgresql, но не могу создать задание.
Я могу создать задание с помощью sqlite, но когда я пытаюсь использовать базу данных postgresql, просмотр не создает задание и перенаправляет меня на домашнюю страницу. Я довольно новичок в django и я пытался искать похожие вопросы здесь, но не смог найти решение.
models.py
class Jobs(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
acct_no = models.ForeignKey(Customers, on_delete=models.CASCADE, default=1000000, db_column='ACCT_NO') # Field name made lowercase.
foreman = models.CharField(db_column='FOREMAN', max_length=45, blank=True, null=True)
comments = models.CharField(db_column='COMMENTS', max_length=255, blank=True, null=True) # Field name made lowercase.
views.py
class JobCreateView(CreateView):
model = Jobs
template_name = 'new_job.html'
form_class = JobForm
def get_initial(self):
initial = super(JobCreateView, self).get_initial()
initial['acct_no'] = Customers.objects.get(pk = self.kwargs['pk'])
return initial
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
customer = Customers.objects.get(pk = self.kwargs['pk'])
context["customer"] = customer
return context
def get_success_url(self):
return reverse_lazy('CustomerView', kwargs = {'pk':self.kwargs['pk']})
forms.py
class JobForm(forms.ModelForm):
class Meta:
model = Jobs
fields = ['acct_no', 'job_type', 'estimatedate', 'estimatetime', 'vacant', 'year_built', 'comments']
labels = {
'job_type' : 'Job Type* ',
'estimatedate' : 'Estimate Date',
'estimatetime' : 'Estimate Time'
}
widgets = {
'acct_no' : forms.HiddenInput(attrs={'class' : 'form-control form-select' }), # foreign key
'job_type' : forms.Select(choices = JOBS, attrs={'class' : 'form-control form-select' }),
'estimatedate' : widgets.DateInput(attrs={'type' : 'date', 'class' : 'form-control'}),
'estimatetime' : widgets.TimeInput(attrs={'type' : 'time', 'class' : 'form-control'}),
'vacant' : forms.Select(choices = CHOICES,attrs={'class' : 'form-control form-select' }),
'year_built' : forms.Select(choices = YEAR_LIST, attrs={'class' : 'form-control form-select' }),
'comments' : forms.Textarea(attrs={'class' : 'form-control'})
}
urls.py
path('new_job/<pk>', my_login_required(JobCreateView.as_view()), name = 'new_job'),
Это первый вопрос, который я задал здесь, так что если я не предоставил достаточно информации, дайте мне знать, и я добавлю все необходимое. Спасибо за любую помощь или идеи!
Я полагаю, что в вашем файле settings.py может отсутствовать то, что необходимо Heroku для подключения к базе данных. Это при условии, что ваши учетные данные базы данных Heroku совпадают со значениями, которые вы скрыли ("***") в конфигурации базы данных.
DATABASES = {
'default': {
...
'CONN_MAX_AGE': 500
...
или
import dj_database_url
DATABASES['default'] = dj_database_url.config(conn_max_age=600, ssl_require=True)
Если вы используете dj-database-url.
Источник: Героку