【问题标题】:Django: how to create a record that contains one or more items from a different db tablesDjango:如何创建包含来自不同数据库表的一个或多个项目的记录
【发布时间】:2017-10-15 23:23:24
【问题描述】:

我想做一个简单的票务系统。我有 3 个表:Ticket、Responsible 和 Services。我还有创建、更新和删除所有 3 个表的数据的视图。我遇到的问题是创建一个创建主票的视图。

我的 3 张桌子是 Ticket、Services 和 Responsible。我的票只能有一个负责人,我的票需要有一项或多项服务。

我不知道如何为一张票选择多项服务,我的模型如下所示:

from django.db import models
from django.core.urlresolvers import reverse

# Create your models here.
class Servicios(models.Model):
    servicio = models.CharField(max_length=250)
    precio = models.FloatField()


class Doctor(models.Model):
    nombre = models.CharField(max_length=250)
    porcentaje = models.FloatField()

class Ticket(models.Model):
    fecha = models.DateTimeField(auto_now_add=True)
    servicio = models.ForeignKey(Servicios)
    doctor = models.ForeignKey(Doctor)
    cantidad = models.IntegerField()
    p_unitario = models.FloatField()
    total = models.FloatField()


    def get_absolute_url(self):
        return reverse('Main:get-list')

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:

    这是正确的方法:

    class Servicios(models.Model):
        servicio = models.CharField(max_length=250)
        precio = models.FloatField()
        ticket = models.ForeignKey(Ticket)
    
    class Doctor(models.Model):
        nombre = models.CharField(max_length=250)
        porcentaje = models.FloatField()
    
    class Ticket(models.Model):
        fecha = models.DateTimeField(auto_now_add=True)
        doctor = models.ForeignKey(Doctor)
        cantidad = models.IntegerField()
        p_unitario = models.FloatField()
        total = models.FloatField()
    

    这里,一个服务可以有一个票,一个票可以有多个服务,另一种选择是多对多。

    【讨论】:

      【解决方案2】:

      对 Servicios 和 ForeignKey 使用多对多关系或对 Doctor 使用 onetoone 在票。 通过使用 manytomany,您可以根据需要引用尽可能多的 Servicios 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-01
        • 2023-03-16
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多