【发布时间】:2016-09-19 08:27:39
【问题描述】:
我正在寻找设计一个简单的应用程序,该应用程序记录通过一个点进入的车辆数量及其详细信息。然后生成不同服务/车辆/等的报告。我想出了一个示例模型。
from django.db import models
# Create your models here.
class Service(models.Model):
service_name = models.CharField(max_length = 60)
timestamp = models.DateTimeField(auto_now_add = True,auto_now = False)
def __unicode__(self):
return self.service_name
class Place(models.Model):
place_name = models.CharField(max_length = 120)
state = models.CharField(max_length=60)
timestamp = models.DateTimeField(auto_now_add = True,auto_now = False)
def __unicode__(self):
return self.place_name
class Connection(models.Model):
vehicle_no = models.CharField(max_length = 15)
service= models.ForeignKey(Service)
source = models.ForeignKey(Place,related_name = 'source')
destination = models.ForeignKey(Place,related_name = 'destination')
trip_distance = models.PositiveIntegerField()
entry_timestamp = models.DateTimeField(auto_now_add = True,auto_now = False)
def __unicode__(self):
return self.vehicle_no
class GlobalOption(models.Model):
config_option = models.CharField(max_length=120)
value = models.CharField(max_length = 60)
Admin.py
from django.contrib import admin
from .models import Connection,Service,Place,GlobalOption
from .forms import ConnectionForm
# Register your models here.
class ConnectionAdmin(admin.ModelAdmin):
form = ConnectionForm
list_display = ('vehicle_no','service','source','destination','trip_distance','Connection_timestamp')
list_filter = ['Connection_timestamp']
search_fields = ['service__service_name','vehicle_no']
class OptionAdmin(admin.ModelAdmin):
fields = ['config_option','value']
list_display = ('config_option','value')
class ConnectionInline(admin.TabularInline):
model = Connection
extra = 1
class PlaceAdmin(admin.ModelAdmin):
list_display = ['place_name','timestamp']
class Meta:
Model = Place
class ConnectionInline(admin.TabularInline):
model = Connection
extra = 1
class ServiceAdmin(admin.ModelAdmin):
list_display = ['service_name','timestamp']
class Meta:
Model = Service
inlines = [ConnectionInline]
admin.site.register(Connection,ConnectionAdmin)
admin.site.register(Service,ServiceAdmin)
admin.site.register(Place,PlaceAdmin)
admin.site.register(GlobalOption,OptionAdmin)
但是在管理员中,每当我添加连接时,都可能有相同的源和目标位置。我不要那个。另外,如何在选择源后动态生成目的地的选择列表?
由于此应用上只会有传入连接,因此更好的设计决策是为源和目标设置单独的模型吗?
【问题讨论】:
标签: python django database models