有关使用实例将数据保存到Django中的数据库中的问题

问题描述 投票:0回答:1

我的代码正在运行,但没有保存到数据库中。我想知道问题的根源。但是,我已经竭尽全力检查错误。提交后我收到成功消息。请帮助解决问题。您可以从以下带有问题的图片中看到。

models.py

class Info(models.Model):
    MASJID_TYPE = (
        ('Ratibi', 'Ratibi'),
        ('Jummah Masjid', 'Jummah Masjid'),
        ('Central Masjid', 'Central Masjid'),

    )


    SECT = (
        ('Al-Sunnah', 'Al-Sunnah'),
        ('Salafee', 'Salafee'),
        ('Sufi', 'Sufi'),
        ('Ahamadiyah', 'Ahamadiyah'),

    )

    STATUS = (
        ('Completed', 'Complete'),
        ('Un-Completed', 'Un-Completed'),
        ('Proposed', 'Proposed'),


    )


    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    masjid_type = models.CharField(max_length=50, choices=MASJID_TYPE)
    address = models.TextField()
    sect  = models.CharField(max_length=250, choices=SECT)
    state  = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    LGA = models.CharField(max_length=50)
    status = models.CharField(max_length=150, choices=STATUS)
    history = models.TextField(blank=False, null=False)
    founder = models.DateField("Founder Year", blank=False, null=False)
    latitude = models.FloatField(max_length=20, blank=False, null=False)
    longitude = models.FloatField(max_length=20, blank=False, null=False)
    congregation = models.IntegerField(blank=False, null=False)
    image = models.ImageField(upload_to='masjid', blank=False, null=False)
    approval = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)




    def __str__(self):
        return self.name


    def get_absolute_url(self):
        return reverse('masjid_detail', kwargs={'pk': self.pk})

class Imam(models.Model):

    CERTIFICATE = (
        ('PhD', 'PhD'),
        ('MSc', 'MSc'),
        ('Bsc', 'Bsc'),

    )

    masjid = models.ForeignKey(Info, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    imam_address = models.TextField(blank=False, null=False)
    phone_no = models.CharField(max_length=20)
    certificate = models.CharField(max_length=50, choices=CERTIFICATE)
    occupation = models.CharField(max_length=50, blank=False, null=False)
    no_of_wives = models.IntegerField(blank=False, null=False)
    no_of_children = models.IntegerField(blank=False, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return str(self.first_name) + str(self.last_name) + str(self.masjid.name)

view.py

def newImam(request, pk):


    masjid = get_object_or_404(Info, pk=pk)
    masjid_info = masjid.id

    template_name = 'addimam.html'

    if request.method == 'POST': 
        form = ImamForm(request.POST, instance=masjid) 

        if form.is_valid():
            form.save()
            print(form.save)
            messages.success(request, 'The Project Details Has Been Added Successully!')
            return redirect('addimam', masjid.id) 
    else: 
        form = ImamForm(instance=masjid) 

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

forms.py

class ImamForm(forms.ModelForm):


    class Meta:
        model = Imam
        exclude = ('updated_at', 'created_at', 'masjid')
django django-views
1个回答
0
投票
def newImam(request, pk):

    masjid = get_object_or_404(Info, pk=pk)

    masjid_info = masjid.id

    template_name = 'addimam.html'

    if request.method == 'POST':
        #form = ImamForm(request.POST, instance=masjid)
        form = ImamForm(request.POST or None)

        if form.is_valid():
            print(form.data)
            form.save(commit=False)
            form.masjid_id = masjid_info

            form.save()

            messages.success(
                request, 'The Project Details Has Been Added Successully!')
            return redirect('addimam', masjid.id)

    else:
        form = ImamForm(instance=masjid)

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

实际上,在这里我们无法发送任何实例,因为没有数据可用于新的伊玛目。因此您必须直接发送表单数据。

© www.soinside.com 2019 - 2024. All rights reserved.