2011-10-12 15 views
7

आप इस जानते हैं:Django: एक साथ जरूरी है?

unique_together = ("name", "date") 

आवश्यक फ़ील्ड के लिए कुछ इसी तरह मौजूद है?

मेरे पास 2 फ़ील्ड हैं: ipv4 और ipv6। मानचित्र पर विभिन्न वायरलेस नेटवर्क हैं, हम उन्हें "द्वीप" कहते हैं क्योंकि वे भौतिक रूप से कनेक्ट नहीं हैं लेकिन एक वीपीएन सुरंग के माध्यम से।

कुछ द्वीप ipv4 का उपयोग करते हैं और वे ipv6 को कार्यान्वित कर रहे हैं, जबकि अन्य केवल ipv6 हैं। तो मैं आवश्यक करने के लिए यह जो कि केवल और अगर मैं जो कि मुख्य रूप से आईपीवी 4 मुसीबतों होगा रहे हैं के लिए आवश्यक करने के लिए IPv6 को इन IPv6 हैं के लिए समस्याग्रस्त किया जाएगा आईपीवी 4 की स्थापना की।

2 चीजें हैं जो मैं कर सकता था: दोनों फ़ील्ड को आवश्यकतानुसार सेट करें या इसे एक तरह से सेट करें ताकि कम से कम दो में से एक भरना चाहिए।

पहला समाधान आसान है लेकिन इतना अच्छा नहीं है, जबकि दूसरा अच्छा है, लेकिन मुझे नहीं पता कि यह हैकिंग django के बिना संभव है या नहीं।

ऐप ओपन सोर्स है।

स्रोत: https://github.com/ninuxorg/nodeshot/

डेमो: http://map.ninux.org

उत्तर

7

आप अपने मॉडल के लिए एक clean विधि लिख सकते हैं। जब भी आप django व्यवस्थापक सहित मॉडल फॉर्म को साफ करते हैं, तो इसे कॉल किया जाएगा।

from django.core.exceptions import ValidationError 

class MyModel(model.Model): 
    <field definitions> 

    def clean(self): 
     """ 
     Require at least one of ipv4 or ipv6 to be set 
     """ 
     if not (self.ipv4 or self.ipv6): 
      raise ValidationError("An ipv4 or ipv6 address is required") 

अधिक जानकारी के लिए Validating objects पर दस्तावेज़ देखें।

+0

अच्छा लग रहा है, यह कोशिश करने के लिए है – nemesisdesign

संबंधित मुद्दे