【发布时间】:2015-04-02 20:31:50
【问题描述】:
读入一个 XML 文件,并使用新信息更新数据库。在验证 XML 数据之后,在更新/保存特定记录之前,将新数据与数据库记录进行比较是合理的。
希望使用面向对象的方法。完成这项任务的最佳方法是什么?
下面给出了模型的草图。请注意,唯一字段设置为 true,这会限制创建 Client 对象的实例。
class BaseModel(models.Model):
class Client(BaseModel):
employee_id = models.CharField(max_length = 30, primary_key = True)
name = models.CharField(max_length=30, db_index=True, null=False, blank=False)
class Alias(BaseModel):
client = models.ForeignKey(Client, related_name='aliases')
ssn = models.CharField(max_length=255, db_index=True, unique=True)
driver_lic = models.CharField(max_length=255, db_index=True, unique=True)
【问题讨论】:
-
您希望进行什么比较?只是这两个条目(SSN 和驾驶执照)确实是独一无二的还是其他什么?
-
XML 文件中的 SSN 可能已经过验证,但它与数据库中的 SSN 不同。在更新条目之前比较两个数字时,可能会将其写入日志文件,标记可能的数据错误。
-
您能否列出哪些字段用于将 XML 条目与数据库条目(如果有)进行匹配,哪些字段可从 XML 条目在数据库中更新?
-
db.aliases.scheme = 'SSN' 和 db.aliases.value = '000-00-0000' xml.aliases.scheme = 'SSN' 和 xml.aliases.value = '111- 11-1111'
-
这不是问题,因为 '111-11-1111' 是唯一的。另一方面,如果 xml 数据具有“000-00-0000”,我将无法创建 xml Client 对象,因为 unique=True。
标签: django validation orm sql-update unique-constraint