2012-01-30 81 views
2

我正在撰寫旅行計劃,並且我有用戶。爲了這個問題的目的,我們假設我的模型與具有「旅行」模型和具有「用戶配置文件」模型一樣簡單。Django模型表臨時數據與永久數據

該站點的功能允許搜索路由(通過外部API),然後將這些路由動態地組合到「旅行」中,然後顯示出來。新的搜索會刪除所有舊的「旅程」並找出新的。

我的問題是這樣的:我想保存一些這些旅行到用戶配置文件。如果用戶選擇旅行,我希望它與該個人資料永久關聯。目前,我的UserProfile中有一個ManyToMany字段,但當旅行「清理/刷新」時,所有行程都將被刪除,並且該關聯無用。我需要一個用戶能夠在一個月後回去看看那次旅行。

我正在尋找一種簡單的方法來複制該行程數據,或者將其添加到配置文件後將其設爲靜態。 ..我不知道從哪裏開始。目前,它配置的方式是有一個trips_profile數據表,它具有「旅行」表的外鍵。 。 。如果我們不是一直刪除/清空旅程表,那將會很好。

幫助讚賞。

+1

爲什麼在Trip模型中沒有字段tripType,如果它設置爲「永久」,這意味着至少有一個用戶將其作爲永久旅行,則不要刪除它。 – Sid 2012-01-30 21:43:30

回答

2

很難說清楚沒有你的車型,但考慮到以下佈局:通過做

class UserProfile(models.Model): 
    trips = models.ManyToManyField(Trip) 

可以清除掉無用Trip S:

Trip.objects.filter(userprofile__isnull=True).delete() 

這隻會刪除Trip不是分配給UserProfile

不過,考慮到以下佈局:

class Trip(models.Model): 
    users = models.ManyToManyField(User) 

你可以殺死無用之旅:

Trip.objects.filter(users__isnull=True).delete() 

第二種方法具有無需到UserProfile甚至任何改變的附帶好處UserProfile在所有,因爲你可以然後只是得到User的旅行與:

some_user.trip_set.all()